home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Disc to the Future 2
/
Disc to the Future Part II Programmer's Reference (Wayzata Technology)(6013)(1992).bin
/
MAC
/
THINKC
/
TCL1
/
CFLAVORS
/
NOTICE
next >
Wrap
Text File
|
1989-11-09
|
4KB
|
75 lines
This notice covers the following topics:
1. What is CFlavors? (briefly)
2. Who is the author?
3. Why was a demonstration version of CFlavors released?
1. (What is CFlavors?) CFlavors was designed to be a versatile, fully
featured object oriented system modeled after the MIT flavors system found
on LISP machines. CFlavors was developed to be as portable as possible by
adhering to the C standard as outlined by Kernighan and Ritchie in "The C
Programming Language" as much as possible and by using a general C type
syntax for all CFlavors macros.
CFlavors has almost all the features that even the most experience flavor
hacker could want. Multiple inheritance is available and that inheritance
can be controlled by the use of required and included flavors. Several
method combinations are supported in addition to the default daemon
combination which includes before and after daemons as well as whoppers. A
vanilla flavor exists along with many methods for the base flavor. The
programmer has access to a NULL terminated array of flavor pointers for all
the flavors. Some additions have been made to LISP flavors; class variables
are supported and broadcasting a message to all instances of a flavor is
possible. For more detailed information on each function see the reference
manual or refer to the cflavors.h header file. To get a better
understanding of flavors refer to the manuals from a LISP machine or chapter
2 (What's a Flavor) of "LISP LORE: A Guide to Programming the LISP Machine"
by Hank Bromley, which is an excellent book which touches on the subject.
Although CFlavors has many similarities to LISP flavors it is not exactly
the same. After all CFlavors is for C not LISP. Conceptually CFlavors
follows the LISP flavors model fairly closely and any experience LISP
flavors programmer should be able to utilize CFlavors quickly. The
similarity between LISP flavors and CFlavors should make code translation
from LISP to C much easier.
CFlavors is written to be as portable as possible and currently runs a
several machines including SUN workstations, MIPs, and IBM PCs.
2. (Who is the author?) My (Pete Ohler) first exposure to object oriented
programming was in the early 1970s when Smalltalk was first introduced.
Most of my experience in object oriented programming has been gained in the
last 5 or 6 years since I completed my master degree in computer science
(concentration on AI). I have used LISP Flavors more than any other object
oriented system. This experience was gained by writing extensive amounts
of code on a Symbolics LISP machine.
After starting to learn C, and becoming frustrated with the lack of support
for real object oriented programming I embarked on adding the features
needed to support a good object oriented environment. The first work on
designing the package began in 1987. The first version of CFlavors was only
distributed to a small group. (i.e., The new company I joined shortly after
starting CFlavors) Since then CFlavors has gone through many changes and
revisions.
Today the user base is still fairly small although there are many hundreds
of thousands of lines of code written that rely on CFlavors.
3. (Why was a demonstration version of CFlavors released?) The users of
CFlavors including myself have found that it provides the tools needed to
develop code that is reusable and easy to extend and modify. It is a
professional package that has had a planned development and still has a well
laid out growth strategy.
I would like to provide this capability to a wider audience and do not have
the time or experience needed to distribute and support CFlavors in such a
way that I can still extend the package and add new features to it.
The purpose of this release of a demonstration version of CFlavors is to;
collect feedback from potential users, to notify the programming community
that there is an alternative object oriented programming capability that
offers features that are not found in any other C or C++ package, and to
generate interest in solving my distribution problem.